//package com.yyl.gateway.config;
//
//
//import cn.hutool.core.util.ArrayUtil;
//import com.alibaba.cloud.commons.lang.StringUtils;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.cloud.gateway.filter.GatewayFilterChain;
//import org.springframework.cloud.gateway.filter.GlobalFilter;
//import org.springframework.core.Ordered;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.http.HttpStatus;
//import org.springframework.http.server.reactive.ServerHttpRequest;
//import org.springframework.stereotype.Component;
//import org.springframework.web.server.ServerWebExchange;
//import reactor.core.publisher.Mono;
//
//import javax.annotation.Resource;
//import java.util.Arrays;
//import java.util.List;
//
//@Component
//public class MyGlobalFilter implements GlobalFilter, Ordered {
//
//    @Value("${whitename}")
//    private String whitename;
//
//
//    @Resource
//    private RedisTemplate redisTemplate;
//    @Override
//    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//        String[] whitenames = whitename.split(",");
//        //  判断请求的路径
//        // header
//        // 获取请求头
//        ServerHttpRequest request = exchange.getRequest();
//
//        String path = request.getURI().getPath();
//        System.out.println("请求的路径：" + path);
//        if (ArrayUtil.contains(whitenames, path)) {
//            // 放行
//            return chain.filter(exchange);
//        } else {
//
//
//            String token = request.getHeaders().getFirst("token");
//            //String token = request.getQueryParams().getFirst("token");
//            // 如果存在token的值    放行
//            if (StringUtils.isNotBlank(token)) {
//                // token
//                // 判断伪造
//                // 根据传过来的token的值去取
//                Object o = redisTemplate.opsForValue().get(token);
//                if (o == null) {
//                    // 过期了  要么是伪造的
//                    System.out.println("token的信息有误");
//                    exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
//                    return exchange.getResponse().setComplete();
//                } else {
//                    return chain.filter(exchange);
//                }
//            } else {
//                System.out.println("没有token的值");
//                exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
//                return exchange.getResponse().setComplete();
//            }
//
//            // 不存在
//
//            // return null;
//        }
//    }
//
//    @Override
//    public int getOrder() {
//        return -2;
//    }
//}
